package com.zznj.xzjc.activity.person;

import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

import androidx.annotation.Nullable;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.luck.picture.lib.PictureSelector;
import com.luck.picture.lib.config.PictureConfig;
import com.luck.picture.lib.config.PictureMimeType;
import com.luck.picture.lib.entity.LocalMedia;
import com.luck.picture.lib.style.PictureWindowAnimationStyle;
import com.vondear.rxtool.view.RxToast;
import com.zznj.xzjc.R;
import com.zznj.xzjc.adapter.GridImageAdapter;
import com.zznj.xzjc.base.BaseActivity;
import com.zznj.xzjc.net.entity.BaseBean;
import com.zznj.xzjc.net.rxjava.HttpMethods;
import com.zznj.xzjc.net.subscribers.ProgressSubscriber;
import com.zznj.xzjc.net.subscribers.SubscriberOnNextListener;
import com.zznj.xzjc.utils.FullyGridLayoutManager;
import com.zznj.xzjc.utils.GlideEngine;
import com.zznj.xzjc.utils.StringUtils;

import java.util.ArrayList;
import java.util.List;

import butterknife.BindView;
import butterknife.OnClick;
import okhttp3.FormBody;


/**
 * Created by JY on 2017/11/15.
 */

public class PersonYiJianFanKuiActivity extends BaseActivity {

    @BindView(R.id.btn_submit)
    TextView btn_submit;

    @BindView(R.id.rec_img)
    RecyclerView recImg;
    @BindView(R.id.content)
    EditText content;
    @BindView(R.id.tvNumber)
    TextView tvNumber;


    @Override
    protected int getLayoutId() {
        return R.layout.gyss_activity_yijianfankui_layout;
    }

    @Override
    public void initView() {
        setTitle("意见反馈");
        initImg();
        content.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }

            @Override
            public void afterTextChanged(Editable s) {
                //编辑框内容变化之后会调用该方法，s为编辑框内容变化后的内容
                if (s.length() > 200) {
                    s.delete(200, s.length());
                    RxToast.normal("字数已达最大值！");
                }
                tvNumber.setText(s.length()+"/"+200);
            }
        });
    }

    @Override
    public void initData() {

    }

    private GridImageAdapter mPostAdapter;
    private List<LocalMedia> localMediaList = new ArrayList<>();
    private void initImg() {
        FullyGridLayoutManager manager = new FullyGridLayoutManager(this, 3, GridLayoutManager.VERTICAL, false);
        recImg.setLayoutManager(manager);
        mPostAdapter = new GridImageAdapter(this, onAddPicClickListener);
        mPostAdapter.setList(localMediaList);
        mPostAdapter.setSelectMax(9);
        recImg.setAdapter(mPostAdapter);
        mPostAdapter.setOnItemClickListener((position, v) ->
                PictureSelector.create(this)
                        .themeStyle(R.style.picture_default_style)
                        .loadImageEngine(GlideEngine.createGlideEngine())// 外部传入图片加载引擎，必传项
                        .openExternalPreview(position, localMediaList));

    }


    private GridImageAdapter.onAddPicClickListener onAddPicClickListener = () -> {
        PictureSelector.create(this)
                .openGallery(PictureMimeType.ofImage())//全部.PictureMimeType.ofAll()、图片.ofImage()、视频.ofVideo()、音频.ofAudio()
                .setPictureWindowAnimationStyle(new PictureWindowAnimationStyle())// 自定义相册启动退出动画
                .loadImageEngine(GlideEngine.createGlideEngine())// 外部传入图片加载引擎，必传项   参考Demo MainActivity中代码
                //   .isOriginalImageControl(cb_original.isChecked())// 是否显示原图控制按钮，如果用户勾选了 压缩、裁剪功能将会失效
                .isWeChatStyle(true)// 是否开启微信图片选择风格，此开关开启了才可使用微信主题！！！
                .isAndroidQTransform(true)// 是否需要处理Android Q 拷贝至应用沙盒的操作，只针对compress(false); && enableCrop(false);有效
                .maxSelectNum(4)// 最大图片选择数量 int
                .minSelectNum(1)// 最小选择数量 int
                .imageSpanCount(3)// 每行显示个数 int
                .isNotPreviewDownload(true)// 预览图片长按是否可以下载
                .setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED)
                .queryMaxFileSize(50)// 只查多少M以内的图片、视频、音频  单位M
                //   .querySpecifiedFormatSuffix(PictureMimeType.ofPNG())// 查询指定后缀格式资源
                // .cameraFileName("test.png") // 重命名拍照文件名、注意这个只在使用相机时可以使用
                //  .renameCompressFile("test.png")// 重命名压缩文件名、 注意这个不要重复，只适用于单张图压缩使用
                //  .renameCropFileName("test.png")// 重命名裁剪文件名、 注意这个不要重复，只适用于单张图裁剪使用
                //   .isSingleDirectReturn(false)// 单选模式下是否直接返回，PictureConfig.SINGLE模式下有效
                .selectionMode(PictureConfig.MULTIPLE)// 多选 or 单选 PictureConfig.MULTIPLE or PictureConfig.SINGLE
                .previewImage(true)// 是否可预览图片 true or false
                .isCamera(true)// 是否显示拍照按钮 true or false
                .imageFormat(PictureMimeType.PNG)// 拍照保存图片格式后缀,默认jpeg
                .isZoomAnim(true)// 图片列表点击 缩放效果 默认true
                .sizeMultiplier(0.5f)// glide 加载图片大小 0~1之间 如设置 .glideOverride()无效
                .setOutputCameraPath("/CustomPath")// 自定义拍照保存路径,可不填
                .enableCrop(false)// 是否裁剪 true or false
                .compress(true)// 是否压缩 true or false
                .isGif(true)// 是否显示gif图片 true or false
                //   .compressSavePath(getPath())//压缩图片保存地址
                .openClickSound(false)// 是否开启点击声音 true or false
                .selectionMedia(localMediaList)// 是否传入已选图片 List<LocalMedia> list
                .cutOutQuality(90)// 裁剪输出质量 默认100
                .minimumCompressSize(100)// 小于100kb的图片不压缩
                .forResult(PictureConfig.CHOOSE_REQUEST);//结果回调onActivityResult code
    };

    @OnClick({R.id.person_tuxian_linear})
    public void onViewClicked(View view) {
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
            case PictureConfig.CHOOSE_REQUEST:
                // 图片选择结果回调
                if (!PictureSelector.obtainMultipleResult(data).isEmpty()) {
                    localMediaList.clear();
                    localMediaList.addAll(PictureSelector.obtainMultipleResult(data));
                    mPostAdapter.notifyDataSetChanged();
                }
                break;

        }
    }

    @OnClick({R.id.btn_submit})
    public void onViewClick(View v){
        if(v.getId() == R.id.btn_submit){
            if(StringUtils.isEmpty(content.getText().toString())){
                RxToast.normal("请输入反馈内容！");
                return;
            }
            saveData();
        }
    }

    private void saveData(){
        SubscriberOnNextListener<BaseBean> onNextListener = baseBean -> {
            if(baseBean.isSuccess()){
                RxToast.normal("提交成功！");
                finish();
            }
        };
        FormBody requestBody = new FormBody.Builder()
                .add("content", content.getText().toString())
                .build();
        HttpMethods.getInstance().addSysFeedback(new ProgressSubscriber<>(onNextListener, mContext, true), requestBody);
    }
}
